#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include "httpserver.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    //获取IAM用户Token
    void on_pushButton_clicked();
    //查询IAM用户可以访问的项目列表
    void on_pushButton_2_clicked();
    //创建规则触发条件，触发条件为属性上报
    void on_pushButton_3_clicked();
    //查询规则条件列表
    void on_pushButton_4_clicked();
    //创建规则动作
    void on_pushButton_5_clicked();
    //查询设备影子数据
    void on_pushButton_6_clicked();

private:
    Ui::MainWindow *ui;
    QByteArray token;  // 用于存储提取的 token

    //获取IAM用户Token
    void getToken();
    //查询IAM用户可以访问的项目列表
    void getProjects();
    //保存 token 到文件
    void saveTokenToFile(const QByteArray &token);
    //从文件里面读取token
    void readTokenFromFile();
    //创建规则触发条件，触发条件为属性上报
    void sendPostRequest(const QString &endpoint, const QString &projectId);
    //查询规则条件列表
    void sendGetRequest(const QString &endpoint, const QString &projectId);
    //创建规则动作
    void sendPostRequest(const QString &endpoint, const QString &projectId, const QString rule_id);
    //查询设备影子数据
    void fetchDeviceShadow(const QString &endpoint, const QString &projectId, const QString &deviceId);
};
#endif // MAINWINDOW_H
